package com.example.project.volley;

import android.graphics.Bitmap;
import android.widget.ImageView;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.StringRequest;
import com.example.project.MyApplication;
import com.example.project.R;

import java.util.HashMap;
import java.util.Map;


public class VolleyRequest {
    private static StringRequest stringRequest; //请求

    //Get请求（地址，请求名称，回调的接口）
    public static void RequsetGet(String url, String tag, HashMap<String, Integer> list, VolleyInterface vif) {
        //实例化RequestQueue
        RequestQueue mqueue = MyApplication.getHttpQueues();
        //检测当前队列里面的重复请求，重复则在后面重新添加，删除原来的（去重）
        MyApplication.getHttpQueues().cancelAll( tag );
        //
        stringRequest = new StringRequest( Request.Method.GET, url, vif.loadingListerner(), vif.errorListener() );
        //设置请求标签
        stringRequest.setTag( tag );
        //添加到请求列表
        MyApplication.getHttpQueues().add( stringRequest );
        //发送请求列表
        MyApplication.getHttpQueues().start();
    }

    //Post请求（地址，请求名称，回调的接口）
    public static void RequesetPost(String url, String tag, final HashMap<String, String> params, VolleyInterface vif) {
        //实例化RequestQueue
        RequestQueue mqueue = MyApplication.getHttpQueues();
        //检测当前队列里面的重复请求，重复则在后面重新添加，删除原来的（去重）
        if(tag!="MonthNum"){
            mqueue.cancelAll( tag );
        }
        stringRequest = new StringRequest(Request.Method.POST, url, vif.loadingListerner(), vif.errorListener() ) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return params;
            }
        };
        //设置请求标签
        stringRequest.setTag( tag );
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(30000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        //添加到请求列表
        mqueue.add( stringRequest );
        //发送请求列表
        mqueue.start();
    }

    //web图片请求
    public static void loadingimage(String tag, String url, VolleyInterface vif) {
        //实例化RequestQueue
        RequestQueue mqueue = MyApplication.getHttpQueues();
        //检测当前队列里面的重复请求，重复则在后面重新添加，删除原来的（去重）
        mqueue.cancelAll( tag );
        ImageRequest imageRequest = new ImageRequest( url, vif.Imagelistener(),
                0, 0, Bitmap.Config.RGB_565, vif.errorListener() );
        //设置请求标签
        imageRequest.setTag( tag );
        //添加到请求列表
        mqueue.add( imageRequest );
        //发送请求列表
        mqueue.start();
    }

    //缓存机制加载图片
    public static void getNetImage(String tag, String url, ImageView iv) {
//        MyApplication.getHttpQueues().cancelAll(tag); //自动帮忙消，可以不用
        //创建一个ImageLoader对象。
        ImageLoader loader = new ImageLoader( MyApplication.getHttpQueues(), new BitmapCache() );
        //获取一个ImageListener对象。缺省图片，加载失败图片
        ImageLoader.ImageListener listener = loader.getImageListener( iv, R.drawable.h2, R.drawable.h1 );
        loader.get( url, listener );
    }
}
